/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package model;

import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Gustavo
 */
public class ClienteDao {

    private static PreparedStatement stmt = null;
    private static ResultSet rs = null;

    public ClienteDao() {
    }

    public static String clienteDuplicado(String cpf) {
        String rstd = "";
        try {
            // Prepara a query para ser executada
            stmt = Conexao.getConexao().prepareStatement("SELECT * FROM TB003_CLIENTE WHERE TB003_CPF = ?");
            // Seta os valores dos parâmetros
            stmt.setString(1, cpf);
            // Atribui o retorno da query executada
            rs = stmt.executeQuery();
            // Se retornou algum registro na consulta, atribui true ao retorno do método
            if (rs.next()) {
                rstd = "1";
            } else {
                rstd = "<h2>Nenhum registro encontrado!<br /> CPF: " + cpf + "</h2>";
            }

        } catch (SQLException e) {
            rstd = "Problemas ao tentar validar cliente. <h2>" + e + "</h2>";
        }
        return rstd;
    }

    public static String Inserir(HttpServletRequest request, Cliente cli) {
        String destino = "erro.jsp";
        try {
            // Prepara a query para ser executada
            stmt = Conexao.getConexao().prepareStatement("CALL SP_TB003_CLIENTE(?,?,?,?,?,?,?,?,?,?,?);");
            stmt.setString(1, "I");
            stmt.setString(2, null);
            stmt.setString(3, cli.getNome());
            stmt.setString(4, cli.getSexo());
            stmt.setString(5, cli.getData());
            stmt.setString(6, cli.getTelefone());
            stmt.setString(7, cli.getEmail());
            stmt.setString(8, cli.getCpf());
            stmt.setString(9, cli.getRg());
            stmt.setString(10, cli.getLogin());
            stmt.setString(11, cli.getSenha());
            // Atribui o retorno da query executada
            if (stmt.executeUpdate() > 0) {
                request.setAttribute("msg", "Cliente cadastrado com sucesso!");
                request.setAttribute("titulo", "Listar Clientes");
                request.setAttribute("link", "listaClientes.jsp");
                request.setAttribute("titulo2", "Cadastrar Novo Cliente");
                request.setAttribute("link2", "cadastroCliente.jsp");
                destino = "sucesso.jsp";
            } else {
                request.setAttribute("msg", "Operação falhou!");
            }
        } catch (SQLException e) {
            // Seta o atributo de erro usado na pagina erro.jsp
            request.setAttribute("msg", "Operação falhou! Erro: " + e);
        } finally {
            return destino;
        }
    }

    public static String Alterar(HttpServletRequest request, Cliente cli) {
        String destino = "erro.jsp";
        try {
            // Prepara a query para ser executada
            stmt = Conexao.getConexao().prepareStatement("CALL SP_TB003_CLIENTE(?,?,?,?,?,?,?,?,?,?,?);");
            stmt.setString(1, "A");
            stmt.setInt(2, cli.getId());
            stmt.setString(3, cli.getNome());
            stmt.setString(4, cli.getSexo());
            stmt.setString(5, cli.getData());
            stmt.setString(6, cli.getTelefone());
            stmt.setString(7, cli.getEmail());
            stmt.setString(8, cli.getCpf());
            stmt.setString(9, cli.getRg());
            stmt.setString(10, cli.getLogin());
            stmt.setString(11, cli.getSenha());
            // Atribui o retorno da query executada
            if (stmt.executeUpdate() > 0) {
                request.setAttribute("msg", "Cliente alterado com sucesso!");
                request.setAttribute("titulo", "Listar Clientes");
                request.setAttribute("link", "listaClientes.jsp");
                request.setAttribute("titulo2", "Cadastrar Novo Cliente");
                request.setAttribute("link2", "cadastroCliente.jsp");
                destino = "sucesso.jsp";
            } else {
                request.setAttribute("msg", "Operação falhou!");
            }
        } catch (SQLException e) {
            // Seta o atributo de erro usado na pagina erro.jsp
            request.setAttribute("msg", "Operação falhou! Erro: " + e);
        } finally {
            return destino;
        }
    }

    public static String Excluir(HttpServletRequest request, Cliente cli) {
        String destino = "erro.jsp";
        try {
            // Prepara a query para ser executada
            stmt = Conexao.getConexao().prepareStatement("CALL SP_TB003_CLIENTE(?,?,?,?,?,?,?,?,?,?,?);");
            stmt.setString(1, "E");
            stmt.setInt(2, cli.getId());
            stmt.setString(3, cli.getNome());
            stmt.setString(4, cli.getSexo());
            stmt.setString(5, cli.getData());
            stmt.setString(6, cli.getTelefone());
            stmt.setString(7, cli.getEmail());
            stmt.setString(8, cli.getCpf());
            stmt.setString(9, cli.getRg());
            stmt.setString(10, cli.getLogin());
            stmt.setString(11, cli.getSenha());
            // Atribui o retorno da query executada
            if (stmt.executeUpdate() > 0) {
                request.setAttribute("msg", "Cliente excluuído com sucesso!");
                request.setAttribute("titulo", "Listar Clientes");
                request.setAttribute("link", "listaClientes.jsp");
                request.setAttribute("titulo2", "Cadastrar Novo Cliente");
                request.setAttribute("link2", "cadastroCliente.jsp");
                destino = "sucesso.jsp";
            } else {
                request.setAttribute("msg", "Operação falhou!");
            }
        } catch (SQLException e) {
            // Seta o atributo de erro usado na pagina erro.jsp
            request.setAttribute("msg", "Operação falhou! Erro: " + e);
        } finally {
            return destino;
        }
    }

    public static String Pesquisar(HttpServletRequest request, int clienteCode) {
        String destino = "erro.jsp";
        try {
            // Prepara a query para ser executada
            stmt = Conexao.getConexao().prepareStatement("SELECT TB003_NOME, TB003_SEXO, DATE_FORMAT(TB003_DATANASC,'%d-%m-%Y') as TB003_DATANASC,"
                    + "TB003_TELEFONE, TB003_EMAIL, TB003_CPF, TB003_RG, TB003_LOGIN, TB003_SENHA FROM TB003_CLIENTE"
                    + " WHERE TB003_CLIENTE_IU = ?");
            stmt.setInt(1, clienteCode);
            // Atribui o retorno da query executada
            rs = stmt.executeQuery();
            // Se retornou algum registro na consulta, altera o destino para a pagina de sucesso
            if (rs.next()) {
                request.setAttribute("nome", rs.getString("TB003_NOME"));
                request.setAttribute("sexo", rs.getString("TB003_SEXO"));
                request.setAttribute("dataNasc", rs.getString("TB003_DATANASC"));
                request.setAttribute("telefone", rs.getString("TB003_TELEFONE"));
                request.setAttribute("email", rs.getString("TB003_EMAIL"));
                request.setAttribute("cpf", rs.getString("TB003_CPF"));
                request.setAttribute("rg", rs.getString("TB003_RG"));
                request.setAttribute("login", rs.getString("TB003_LOGIN"));
                destino = "view/listaCliente.jsp";
            }
        } catch (SQLException e) {
            // Seta o atributo de erro usado na pagina erro.jsp
            request.setAttribute("msg", "Operação falhou! Erro: " + e);
        } finally {
            return destino;
        }
    }

    public static List<Cliente> listarCliente() {

        List<Cliente> listcli = new ArrayList<Cliente>();
        try {
            stmt = Conexao.getConexao().prepareStatement("SELECT TB003_CLIENTE_IU, TB003_NOME, TB003_SEXO, DATE_FORMAT(TB003_DATANASC,'%d-%m-%Y') as TB003_DATANASC,"
                    + "TB003_TELEFONE, TB003_EMAIL, TB003_CPF, TB003_RG, TB003_LOGIN, TB003_SENHA FROM dbplano.TB003_CLIENTE");
            // Atribui o retorno da query executada
            rs = stmt.executeQuery();
            while (rs.next()) {
                Cliente cli = new Cliente();
                cli.setId(rs.getString("TB003_CLIENTE_IU"));
                cli.setNome(rs.getString("TB003_NOME"));
                cli.setSexo(rs.getString("TB003_SEXO"));
//                cli.setDataNasc(rs.getString("TB003_DATANASC"));
                cli.setData(rs.getString("TB003_DATANASC"));
                cli.setTelefone(rs.getString("TB003_TELEFONE"));
                cli.setEmail(rs.getString("TB003_EMAIL"));
                cli.setLogin(rs.getString("TB003_LOGIN"));
                cli.setSenha(rs.getString("TB003_SENHA"));
                cli.setRg(rs.getString("TB003_RG"));
                cli.setCpf(rs.getString("TB003_CPF"));
                listcli.add(cli);
            }
            stmt.close();
        } catch (Exception e) {
        }
        return listcli;
    }
}
